Currently test programs for testing complex software applications, for example, applications for complex business processes, are themselves complex and frequently very large in size, since they not only have to model the applications, but also all of the constituent sub-processes and associated data. For example, these software applications usually implement generic business processes, which model industry operations. The software applications must be customized to fit each customer's role in the marketplace and to fit the customer's specific data. As a result, the complexity and size of each test program can increase dramatically where some or all of a number of test cases for the application must run in parallel, since this scenario must also be programmed into the test program. For example, in a banking environment, a test case defines the activities that occur in an account (e.g., opening the account, depositing funds, withdrawing funds, closing the account, etc.) over a period of time.
In general, the test cases that must run in parallel are independent of each other, (for example, each test case represents activities that occur in different accounts), but, at some select points, called “sync points” (i.e., “synchronization points”) in the test cases, the flow of the test cases must be interrupted and a “central activity,” for example, a central test activity, must be performed. For example, in the banking environment, the central activity can be an activity that occurs at a specified time, e.g., at the beginning of a day, at the end of the day, at the end of a month, at the end of a reporting period, etc. The central (or global) activity, generally, exerts an influence on all or almost all of the test cases. After the central activity has been performed, the individual test cases may continue to be executed. The test program continues until all of the test cases and central activities have been executed for some predetermined time period.
The current general architecture is used in transaction banking to test business cases of core banking functionality for long time periods and where the central activities can include “end of the day processing” jobs, which are set to run every night. Unfortunately, if changes/additions need to be made to the test cases, currently, the entire test program must be edited to incorporate the changes and/or additions. For example, in the banking scenario, a customer's checking and savings accounts are programmed as separate accounts, since they operate independently of each other. However, if the two accounts are to be associated to enable transfers between the accounts, the test program will have to be modified to include this functionality by deleting the separate code sections for each type of account and adding new code directed to a hybrid test case where the customer's checking and savings accounts are handled in the single test case. This is not an insignificant change and it can be a time consuming and costly process.
Therefore, an efficient and easily modifiable test architecture to permit the addition and removal of test cases without having to change existing test cases is highly desirable.